package com.gitee.swsk33.annotationbased.config;

import com.gitee.swsk33.annotationbased.model.Cat;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

// 配置类，在其中可以手动创建对象并将其作为Bean注册到IoC容器
@Configuration
public class BeanConfig {

	/**
	 * 自定义一个Cat对象并返回，返回的对象会被作为Bean注册到IoC容器中
	 * 默认情况下，这个Bean的名字就是方法名cat，也可以在@Bean注解中传入参数指定bean的名字
	 */
	@Bean
	public Cat cat() {
		Cat cat = new Cat();
		cat.setId(1);
		cat.setName("柿饼");
		return cat;
	}

	/**
	 * 带参数的@Bean方法
	 *
	 * @param cat 这里有个参数，形参名为cat，那么Spring框架启动时，就会从IoC容器中找到名为cat的bean作为这个参数传入该函数并运行
	 */
	@Bean
	public Cat catTwo(Cat cat) {
		Cat catTwo = new Cat();
		catTwo.setId(2);
		catTwo.setName(cat.getName() + "2");
		return catTwo;
	}

}